/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"FBFDF824-0B08-49F8-A66B-50DD51D66737",variableType:4}
 */
var es_preview = 0;

/**
 *
 * @properties={typeid:24,uuid:"4B95EE64-0EF0-4127-AA52-0EFFE01524E2"}
 */
function agregar_renglon()
{ //  dar alta de un renglon en op_detalle
	if (concepto == null || concepto == ' ')
	{
		globals.DIALOGS.showWarningDialog('Aviso','Debe ingresar concepto primero','OK')
	}   
	else
	{
		op_cabecera_to_op_detalle.newRecord(false);
	}	
}

/**
 *
 * @properties={typeid:24,uuid:"D394DBE6-4943-4B56-93D2-ADA0DEAB1E32"}
 */
function cancelar() 
{
	databaseManager.revertEditedRecords()
	Iniciar();
}

/**
 *
 * @properties={typeid:24,uuid:"2F53C79D-ABD5-402F-AEE4-6561EA5848D4"}
 * @AllowToRunInFind
 */
function confirmar() 
{
	if (globals.zparam_usa_proyecto == 1 && proyecto_id == null)
	{
		globals.DIALOGS.showWarningDialog('Aviso','Debe ingresar proyecto','OK')
		return false
	}
	
	var estado = totalizar() 
	if (estado == false)     
		return false;
			
	estado = validar_al_confirmar(); // 08/10/2010  para asegurar que fecha_pago y otros fueron informados
	if (estado == false)  // 08/10/2010
		return false;   // 08/10/2010
	
	if (Math.abs(globals.gtotal_valores - globals.gtotal_varios) > 0.005)
	 {
		globals.DIALOGS.showWarningDialog('Aviso',"No coincide el total de la Imputacion Contable con los Valores ingresados",'OK')
		return false; 
	 }
	 else
	 {
		//// buscar numeracion de  de pagos varios   codigo=51
		var fs_nro_op = databaseManager.getFoundSet(databaseManager.getDataSourceServerName(controller.getDataSource()),'numeracion_pr')
		fs_nro_op.loadAllRecords()
		fs_nro_op.find()
		fs_nro_op.sucursal			= sucursal
		fs_nro_op.letra				= letra
		fs_nro_op.cod_comprobante 	= 51   //fijo 51=pagos varios 52=ingresos varios
		var found = fs_nro_op.search()
		if (found != 1)
	    {	
		   globals.DIALOGS.showWarningDialog('Aviso','Sucursal o Tipo de comprobante incorrectos al buscar numeración de pagos varios','OK')
		   return false;
	    }
		
     	fs_nro_op.setSelectedIndex(1)
	  	var nro_aux = fs_nro_op.ultimo_numero + 1  
	  	codigo_movimiento = 6
		globals.duplicacion_op_cabecera(letra,sucursal,nro_aux,codigo_movimiento)
		if (globals.gfilas != 0)  // si es cero, la factura no existe
		{ // ya existe , lo rechaza
			globals.DIALOGS.showWarningDialog('Aviso','Ya existe ese Pago Varios ' + letra + '-' + utils.numberFormat(sucursal,'0000') + '-' + utils.numberFormat(nro_aux,'00000000'),'OK')
			return false;
		}
		
		fs_nro_op.ultimo_numero = fs_nro_op.ultimo_numero + 1
		    
		nro_comprobante=fs_nro_op.ultimo_numero;
		codigo_movimiento=6;  
		chofer_id=0;
		importe=globals.gtotal_valores;
		importe_en_letras=globals.nro_a_letra(importe); 
		total_valores=globals.gtotal_valores;
		total_retenciones=globals.gtotal_retenciones; 
	      
		
	  	//// grabar cyb  por cada detalle  y cheques  
		found = op_cabecera_to_op_detalle.getSize() // solo para ver cuantos hay
		for (var i = 1 ; i <= op_cabecera_to_op_detalle.getSize(); i++)
		{
			//// grabar cheques    
			op_cabecera_to_op_detalle.setSelectedIndex(i)
			if (op_cabecera_to_op_detalle.op_detalle_to_valores.es_cheque == 1)	
			{// es cheque
				
				if (op_cabecera_to_op_detalle.op_detalle_to_valores.es_propio == 1)	
				{// es propio
					var $cheque = op_cabecera_to_op_detalle.op_detalle_id_to_cheques
					$cheque.newRecord()
				
					$cheque.banco_id			= op_cabecera_to_op_detalle.banco_id 
					$cheque.banco_sucursal		= op_cabecera_to_op_detalle.banco_sucursal //???
					$cheque.boleta_dep			= null
					$cheque.cheque_nro			= op_cabecera_to_op_detalle.cheque_nro
					$cheque.cuentas_cyb_id		= op_cabecera_to_op_detalle.cuentas_cyb_id
					$cheque.estado				= globals.zconf_chq_emitido		
					$cheque.fecha_emision		= op_cabecera_to_op_detalle.fecha_emision_chq
					$cheque.fecha_entrega		= fecha
					$cheque.fecha_pago			= op_cabecera_to_op_detalle.fecha_pago
					$cheque.importe				= op_cabecera_to_op_detalle.importe
					$cheque.lugar_emision		= op_cabecera_to_op_detalle.lugar_emision // ???
					$cheque.marca_acredit		= 0
					$cheque.moneda_id			= op_cabecera_to_op_detalle.moneda_id
					$cheque.titular				= op_cabecera_to_op_detalle.titular
					$cheque.titular_cuit		= op_cabecera_to_op_detalle.titular_cuit
					$cheque.titular_direccion	= op_cabecera_to_op_detalle.titular_direccion
					$cheque.valor_id			= op_cabecera_to_op_detalle.valor_id
					$cheque.concepto			= "Pagos Varios: " + sucursal + ' - '+ nro_comprobante + ' - ' + concepto   // de la cabecera //13/10/2010
				}// fin es propio
				else
				{// es de terceros  
					//  desmarcar  en cheques el cheque y poner fecha_entrega y estado
					if (op_cabecera_to_op_detalle.op_detalle_to_cheques_id.marcado_cheque == 1)
					{
						op_cabecera_to_op_detalle.op_detalle_to_cheques_id.marcado_cheque 	= 0  // desmarca
				 		op_cabecera_to_op_detalle.op_detalle_to_cheques_id.fecha_entrega 	= fecha // entregado 
						op_cabecera_to_op_detalle.op_detalle_to_cheques_id.estado			= globals.zconf_chq_entregado_pago
					}
				}// fin es de terceros
		    }// fin es cheque
			
		    //// grabar movim_cyb para todos los valores
			op_cabecera_to_op_detalle.op_detalle_to_movim_cyb.newRecord();
			if(op_cabecera_to_op_detalle.op_detalle_to_valores.es_cheque == 1)
			{//es cheque
				if (op_cabecera_to_op_detalle.op_detalle_to_valores.es_propio == 1) //es propio
					op_cabecera_to_op_detalle.op_detalle_to_movim_cyb.cheque_id = op_cabecera_to_op_detalle.op_detalle_id_to_cheques.cheque_id; 
				else // es terceros
				{
					//op_cabecera_to_op_detalle.op_detalle_to_movim_cyb.cheque_id=forms.opago_2.op_detalle_to_cheques_id.cheque_id; //01/07/2010
					op_cabecera_to_op_detalle.op_detalle_to_movim_cyb.cheque_id = op_cabecera_to_op_detalle.op_detalle_to_cheques_id.cheque_id; //01/07/2010
				}
			}
			else
			{// es efectivo
				op_cabecera_to_op_detalle.op_detalle_to_movim_cyb.cheque_id = null;	
			}
			op_cabecera_to_op_detalle.op_detalle_to_movim_cyb.cod_movim = globals.zconf_cyb_cod_movim_egreso;     //1=Ingreso 2=Egreso ver solucion valuelist
			op_cabecera_to_op_detalle.op_detalle_to_movim_cyb.cuentas_cyb_id = op_cabecera_to_op_detalle.cuentas_cyb_id;
			
			op_cabecera_to_op_detalle.op_detalle_to_movim_cyb.empresa_id = null;   // no se informa proveedor
			
			if (((op_cabecera_to_op_detalle.op_detalle_to_valores.es_cheque==1) && (op_cabecera_to_op_detalle.op_detalle_to_valores.es_propio==1) && (op_cabecera_to_op_detalle.op_detalle_to_valores.es_ch_difer==1)) //es cheque propio diferido
				|| ((op_cabecera_to_op_detalle.op_detalle_to_valores.es_cheque==0) && (op_cabecera_to_op_detalle.op_detalle_to_valores.usa_cta_bco==1)
				|| op_cabecera_to_op_detalle.op_detalle_to_valores.es_tarjeta == 1))
					op_cabecera_to_op_detalle.op_detalle_to_movim_cyb.fecha_movim = op_cabecera_to_op_detalle.fecha_pago;         // cabecera
				else  
					op_cabecera_to_op_detalle.op_detalle_to_movim_cyb.fecha_movim = fecha;         // cabecera
			op_cabecera_to_op_detalle.op_detalle_to_movim_cyb.importe				= op_cabecera_to_op_detalle.importe;
			op_cabecera_to_op_detalle.op_detalle_to_movim_cyb.imputacion_id			= globals.zconf_cyb_imputacion_egresos_varios; // 9=egresos varios 8=egresos varios  en  tabla cod_imput
			op_cabecera_to_op_detalle.op_detalle_to_movim_cyb.valor_id				= op_cabecera_to_op_detalle.valor_id;
			op_cabecera_to_op_detalle.op_detalle_to_movim_cyb.concepto				= "Pagos Varios: "  + concepto   // de la cabecera //19/02/2011
			op_cabecera_to_op_detalle.op_detalle_to_movim_cyb.marca_conciliacion 	= 0  
			op_cabecera_to_op_detalle.op_detalle_to_movim_cyb.fecha_conciliacion 	= null 
			op_cabecera_to_op_detalle.op_detalle_to_movim_cyb.referencia			= ' '
			op_cabecera_to_op_detalle.op_detalle_to_movim_cyb.proyecto_id			= proyecto_id
			if(op_cabecera_to_op_detalle.op_detalle_to_valores.es_cheque == 1 || op_cabecera_to_op_detalle.op_detalle_to_valores.usa_cta_bco == 1)
			 	op_cabecera_to_op_detalle.op_detalle_to_movim_cyb.referencia = op_cabecera_to_op_detalle.cheque_nro; 
			
			op_cabecera_to_op_detalle.op_detalle_to_movim_cyb.moneda_id = op_cabecera_to_op_detalle.op_detalle_to_movim_cyb.movim_cyb_to_cuentas_cyb.moneda_id // 11/08/2010 revidar si graba // ?
			/////16/09/2010  se agrega para relacion con el numero de apertura de la caja
			op_cabecera_to_op_detalle.op_detalle_to_movim_cyb.apertura_id = op_cabecera_to_op_detalle.op_detalle_to_movim_cyb.movim_cyb_to_cuentas_cyb.apertura_id;
			
			//// 27/05/2010  actualiza saldos_caja//////////////////////////////////
			if (op_cabecera_to_op_detalle.op_detalle_to_movim_cyb.movim_cyb_to_cuentas_cyb.cuentas_tipo==0) // es cuenta caja
			{
				if(op_cabecera_to_op_detalle.op_detalle_to_valores.es_cheque == 1) 
				{// es cheque 
					if (op_cabecera_to_op_detalle.op_detalle_to_valores.es_propio != 1) //es terceros
						op_cabecera_to_op_detalle.op_detalle_to_movim_cyb.movim_cyb_to_cuentas_cyb.cuentas_cyb_to_saldos_caja.saldo_valores -= op_cabecera_to_op_detalle.importe
				}
				else // es efectivo
					op_cabecera_to_op_detalle.op_detalle_to_movim_cyb.movim_cyb_to_cuentas_cyb.cuentas_cyb_to_saldos_caja.saldo_efectivo -= op_cabecera_to_op_detalle.importe
			}
		} // cierra el for
	 
		var $msj
		estado = databaseManager.saveData()
		if (estado == true)
		{
			//29/10/2010   para que muestre lo mismo que guardó en la base 
			databaseManager.refreshRecordFromDatabase(foundset, 0); 
		    databaseManager.refreshRecordFromDatabase(op_cabecera_to_op_detalle.op_detalle_to_cuentas_cyb.cuentas_cyb_to_saldos_caja, 0); // hace falta?  
			//29/10/2010 hasta
			 
			$msj = 'Pago Varios ' + letra +  '-' + utils.numberFormat(sucursal,'0000') + '-' + utils.numberFormat(nro_comprobante,'00000000') +  ' Generada correctamente' + ' Imprime:'
			var resp = globals.DIALOGS.showQuestionDialog('Pago Varios',  $msj,  "Si", "No" )
			if (resp == 'Si')
			{
				es_preview = 1;
				forms.opago_varios_imp.controller.showPrintPreview(true) 
			}
			else // no hacer iniciar() cuando se va al preview porque pasa por onshow al volver, entonces hace dos veces iniciar, ver form fac
			{ 
				Iniciar() 
			} 
		}
		else
		{
			globals.DIALOGS.showWarningDialog('Aviso', 'Pago Varios No generado ' ,  "OK")
			cancelar()
		} 
	}
	return true
}

/**
 *
 * @properties={typeid:24,uuid:"2E703FBE-BB3F-4BE9-A359-41FEDDD834B8"}
 */
function eliminar_renglon() 
{
var found = op_cabecera_to_op_detalle.getSize()
	if (found == 0)
	{
	    globals.gtotal_valores=0
	}
	else
	{
	var resp = globals.DIALOGS.showQuestionDialog( 'Confirma',  '¿Seguro que desea dar de baja? ',  'Si', 'No')
	if (resp == 'Si')
	{
		op_cabecera_to_op_detalle.deleteRecord()
		totales_valores()
	}
	}
}

/**
 *
 * @properties={typeid:24,uuid:"D3B99389-415C-44DE-9059-C69C1A76E2C9"}
 */
function salir_rec() 
{
	if (es_preview== 0) //01/07/2010
	{
	 	var resp = globals.DIALOGS.showQuestionDialog( 'Confirma',  '¿Seguro que desea salir?' ,  'Si', 'No')
		if (resp == 'Si')
		{
			databaseManager.revertEditedRecords()
			databaseManager.setAutoSave(true)
		}
	}
}

/**
 *
 * @properties={typeid:24,uuid:"4432ADF7-CA27-4C0B-A629-9468D97EE893"}
 */
function totalizar() 
{
	var estado = totales_valores(); 
	if (estado == false)  
		return false;  
	totales_varios();
	return true
}

/**
 *
 * @properties={typeid:24,uuid:"10C14240-2B81-4DC6-887E-723E4893CB73"}
 */
function Iniciar() 
{
	databaseManager.setAutoSave(false);
	controller.newRecord(false);
	fecha = application.getServerTimeStamp();  
	letra = "X";     
	globals.gtotal_varios = 0;
	globals.gtotal_valores = 0;
	globals.gtotal_saldo = 0;
	es_preview = 0; 
}

/**
 *
 * @properties={typeid:24,uuid:"1EEFD812-AC64-461C-858E-1FB87BE43261"}
 */
function totales_valores() 
{
	globals.gtotal_valores = 0
	for ( var i = 1 ; i <= op_cabecera_to_op_detalle.getSize(); i++ )
	{
		op_cabecera_to_op_detalle.setSelectedIndex(i);
		globals.gtotal_valores += op_cabecera_to_op_detalle.importe
		var estado = ver_saldo();   
		if (estado == false) 
		{
			globals.gtotal_valores = 0; 
			return false;       
		}   
	}
	return true;
}

/**
 *
 * @properties={typeid:24,uuid:"85B8F96A-7D46-47C3-8637-F68C6BE91FBB"}
 * @AllowToRunInFind
 */
function ver_saldo() 
{
	if(op_cabecera_to_op_detalle.op_detalle_to_valores.usa_cta_bco==1) // es transferencia
			return true;
	if (op_cabecera_to_op_detalle.op_detalle_to_valores.es_cheque==1) // es  cheque
			return true;    
	
	// es efectivo: debe chequear saldo   
	/** @type {JSFoundSet<db:/infocom/saldos_caja>}*/ 
	var fs_saldos = databaseManager.getFoundSet(databaseManager.getDataSourceServerName(controller.getDataSource()),'saldos_caja')
	var estado = fs_saldos.find()
	if (estado == true)
	{
		if (op_cabecera_to_op_detalle.cuentas_cyb_id == null)
		{
			globals.DIALOGS.showWarningDialog('Aviso','Debe ingresar Cuenta','OK')
			return false;	
		}
		fs_saldos.cuentas_cyb_id 	= op_cabecera_to_op_detalle.cuentas_cyb_id;
		fs_saldos.moneda_id 		= globals.zparam_moneda_default;
		var found = fs_saldos.search();
		if (found == 1)  
		{ // ver saldo existente 
			fs_saldos.setSelectedIndex(1);
	    	if (op_cabecera_to_op_detalle.importe > fs_saldos.saldo_efectivo)
	    	{ // importe supera lo existente en caja
	    		globals.DIALOGS.showWarningDialog('Aviso','Efectivo a pagar de $' + op_cabecera_to_op_detalle.importe + ' supera el saldo de la caja $' + fs_saldos.saldo_efectivo,'OK')
				return false;
	    	}
	    	else
	    		return true;
	    }
	    else
		{
			globals.DIALOGS.showWarningDialog('Aviso','Error al buscar saldo de caja','OK')
	    	return false;
		}
	}
	else
	{
		globals.DIALOGS.showWarningDialog('Aviso','Error al iniciar la búsqueda de saldo de caja','OK')
    	return false;
	} 
}

/**
 * Perform the element default action.
 *
 * @param {JSEvent} event the event that triggered the action
 *
 * @properties={typeid:24,uuid:"1FF4A241-7056-4BF0-AB2A-21902BABC372"}
 */
function agregar_renglon_varios(event) 
{// dar alta de un renglon en op_detalle_varios 
	op_cabecera_to_op_detalle_varios.newRecord(false);    
}

/**
 * Perform the element default action.
 *
 * @param {JSEvent} event the event that triggered the action
 *
 * @properties={typeid:24,uuid:"6905F4AE-8A33-4076-B1E9-79B9C9EDD6CE"}
 */
function eliminar_renglon_varios(event) 
{
	var found = op_cabecera_to_op_detalle_varios.getSize()
	if (found==0)
	{
	   	globals.gtotal_varios=0  // ????
	}
	else
	{
	var resp = globals.DIALOGS.showQuestionDialog( 'Confirma',  '¿Seguro que desea dar de baja? ',  'Si', 'No')
	if (resp == 'Si')
	{
		op_cabecera_to_op_detalle_varios.deleteRecord()
		totales_varios()  // recalcula los totales ?  probar
	}
	}
}

/**
 *
 * @properties={typeid:24,uuid:"DBAC3B4D-5A9C-49E4-A2C1-1E95DB169472"}
 */
function totales_varios() 
{
	globals.gtotal_varios = 0;
	for ( var i = 1 ; i <= op_cabecera_to_op_detalle_varios.getSize(); i++ )
	{
		op_cabecera_to_op_detalle_varios.setSelectedIndex(i);
		globals.gtotal_varios += op_cabecera_to_op_detalle_varios.importe
	}
}

/**
 * @properties={typeid:24,uuid:"2A8F3909-FE8A-4D9E-8421-18BC45664F65"}
 */
function validar_al_confirmar() 
{
	for (var i = 1 ; i <= op_cabecera_to_op_detalle.getSize(); i++)
		{
	//// recorrer cheques    
		op_cabecera_to_op_detalle.setSelectedIndex(i)
		if (op_cabecera_to_op_detalle.cuentas_cyb_id==null) 
		{
			globals.DIALOGS.showWarningDialog('Aviso', 'Debe ingresar cuenta de banco','OK')
			return false;
		}
		if (op_cabecera_to_op_detalle.importe==null) 
		{
			globals.DIALOGS.showWarningDialog('Aviso', 'Debe ingresar importe','OK')
			return false;
		}
		if (op_cabecera_to_op_detalle.op_detalle_to_valores.es_cheque==1)	
		{// es cheque
			if (op_cabecera_to_op_detalle.op_detalle_to_valores.es_propio==1)	
			{// es propio	
				if (op_cabecera_to_op_detalle.fecha_pago==null || 
					op_cabecera_to_op_detalle.dias_pago==null) // 16/12/2010
				{ 
					if (op_cabecera_to_op_detalle.op_detalle_to_valores.es_ch_difer!=1)// no es diferido
						op_cabecera_to_op_detalle.fecha_pago=new Date;	
					else
					{
						globals.DIALOGS.showWarningDialog('Aviso','Debe ingresar fecha de pago/dias pago  para cheque diferido nro. ' + op_cabecera_to_op_detalle.cheque_nro,'OK')
						return false;
					}
				}
			}
			if (op_cabecera_to_op_detalle.cheque_nro==null) 
			{
				globals.DIALOGS.showWarningDialog('Aviso','Debe ingresar nro. de cheque','OK')
				return false;
			}
		} // es efect. o transf.
		else //08/10/2010
		{
			if(op_cabecera_to_op_detalle.op_detalle_to_valores.usa_cta_bco==1)
			{
				if (op_cabecera_to_op_detalle.fecha_emision_chq==null)
				{
					globals.DIALOGS.showWarningDialog('Aviso','Debe ingresar fecha de transferencia' + op_cabecera_to_op_detalle.cheque_nro,'OK')
					return false;
				}
				if (op_cabecera_to_op_detalle.cheque_nro==null)
				{
					globals.DIALOGS.showWarningDialog('Aviso','Debe ingresar  nro. de transferencia' + op_cabecera_to_op_detalle.cheque_nro,'OK')
					return false;
				}
			}
		}
	}
	for (i = 1 ; i <= op_cabecera_to_op_detalle_varios.getSize(); i++)  // 08/10/2010
	{//// recorrer imputacion contable
		op_cabecera_to_op_detalle_varios.setSelectedIndex(i)
		if (op_cabecera_to_op_detalle_varios.importe==null) 
		{
			globals.DIALOGS.showWarningDialog('Aviso','Debe ingresar importe','OK')
			return false;
		}
		if (op_cabecera_to_op_detalle_varios.concepto_varios==null) 
		{
			globals.DIALOGS.showWarningDialog('Aviso','Debe ingresar concepto','OK')
			return false;
		}
		if (op_cabecera_to_op_detalle_varios.plan_id==null) 
		{
			globals.DIALOGS.showWarningDialog('Aviso','Debe ingresar cuenta','OK')
			return false;
		}
	}
	return true;
}
